#pragma once
#include <vulkan/vulkan.h>
#include <vector>
#include <string>
#include <stdexcept>
#include "vulkan/VKShader.h"
#include "graphics/Mesh.h"

class VKGraphicsPipeline
{
public:
	VKGraphicsPipeline();
	~VKGraphicsPipeline();

	void CreateMeshPipelineAndLayout(Mesh* mesh, VkDescriptorSetLayout descriptorSetLayout, VkRenderPass renderPass);
	void CreateSkyboxPipelineAndLayout(Mesh* mesh, VkDescriptorSetLayout descriptorSetLayout, VkRenderPass renderPass);

	VkPipelineLayout m_PipelineLayout;
	VkPipeline m_Pipeline;

private:
	void CreateGraphicsPipelineLayout(VkDescriptorSetLayout descriptorSetLayout);
	void CreateMeshGraphicsPipeline(Mesh* mesh, VkRenderPass renderPass);
	void CreateSkyboxGraphicsPipeline(Mesh* mesh, VkRenderPass renderPass);
};

